<?php

namespace app\utils\ui\ele;

use app\utils\ui\vue\VueFormItem;
use app\utils\ui\VueView;

/**
 * element-ui plus 的虚拟化选择器，支持非常多的选项。 解决普通select的大量选项卡顿的问题
 */
class Select extends VueFormItem implements VueView{

    public $options=[];
    public $options_varname='';

    /**
     * @param string $vmodel 字段
     * @param string $vmodel_value 字段值
     * @param array|Closure $attr
     * @param array $options 数组中的每个item只支持 object 类型的对象
     * @param string $options_varname options对应的变量名称
     */
    public function __construct($vmodel,$vmodel_value,$attr,$options,$options_varname) 
    {
        $_options = [];
        foreach($options as &$item){
            if(isset($item['label']) && isset($item['value'])){
                $_options[]=$item;
            }
        }
        $this->options=$_options;
        $this->options_varname=$options_varname;
        parent::__construct($vmodel,$vmodel_value,$attr,[],false);
    }
    

    public function data()
    {
        $last = parent::data();
        return array_merge($last,[
            $this->options_varname=>$this->options
        ]);
    }

    public function render(){
        return parent::base_render('el-select-v2');
    }
    
}